As known in the art, tunneling is encapsulating messages formatted in one communication protocol (i.e., messages having headers of one protocol) with headers of another communication protocol. The messages are encapsulated at one end of a communication link that uses the latter protocol and de-capsulated at another end of the communication link. Then, the de-capsulated messages may be carried to the destinations over a network that implements the former protocol in which the messages are formatted.
Tunneling is used for different purposes. For example, tunneling is used in order to carry the messages formatted in one protocol over a delivery network that uses another protocol. These two protocols may be of the same protocol type or different protocol types of one layer of the Open Systems Interconnection model (OSI model). In addition, these two protocols may be of different layers of the OSI model. Tunneling is also used to take advantage of the security functions provided by the encapsulating protocol when the protocol of the encapsulated messages provides little or no security functions. Another use of tunneling might be for delivering messages that have addresses that are not compatible with the addresses of the delivery network by using compatible addresses in the headers of the encapsulating protocol.
A tunnel can be built between two network nodes (e.g., routers, switches, servers, etc.). For example, two network switches could be at two ends of a communication link that uses an encapsulating protocol to transmit encapsulated messages between the two switches. These network switches may have network interface controllers that may allow the network switches to offload some of a protocol stack to the network interface controllers. By offloading, the network switches save their computing resources and use them to perform other tasks. Therefore, these network switches can improve their performances by offloading. However, some types of protocols partially allow or do not allow at all for offloading. When one such protocol is used as an encapsulating protocol, the network switches may not fully utilize their network interface controllers' capabilities.